package com.ruoyi.framework.security.context;

import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import com.ruoyi.common.core.text.Convert;

/**
 * 权限信息
 * 
 * @author ruoyi
 */
public class PermissionContextHolder
{
    private static final String PERMISSION_CONTEXT_ATTRIBUTES = "PERMISSION_CONTEXT";

    public static void setContext(String permission)
    {
        //.currentRequestAttributes()用于获取当前请求的上下文对象
        //.setAttribute
        //第一个参数 PERMISSION_CONTEXT_ATTRIBUTES：是 RuoYi 定义的常量键（通常为字符串，如 "PERMISSION_CONTEXT"），用于标识存储的权限信息在上下文的 key。
        //第二个参数 permission：是要存储的权限数据，通常是当前用户的权限标识集合（如 Set<String> 类型，包含 system:user:add 等权限）。
        //第三个参数 RequestAttributes.SCOPE_REQUEST：指定存储范围为 “当前请求”，即权限信息仅在本次请求的生命周期内有效，请求结束后自动销毁
        RequestContextHolder.currentRequestAttributes().setAttribute(PERMISSION_CONTEXT_ATTRIBUTES, permission,
                RequestAttributes.SCOPE_REQUEST);
    }

    public static String getContext()
    {
        return Convert.toStr(RequestContextHolder.currentRequestAttributes().getAttribute(PERMISSION_CONTEXT_ATTRIBUTES,
                RequestAttributes.SCOPE_REQUEST));
    }
}
